{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Numpy Tutorials\n",
    "\n",
    "NumPy is a general-purpose array-processing package. It provides a high-performance multidimensional array object, and tools for working with these arrays. It is the fundamental package for scientific computing with Python\n",
    "\n",
    "### What is an array\n",
    "\n",
    "An array is a data structure that stores values of same data type. In Python, this is the main difference between arrays and lists. While python lists can contain values corresponding to different data types, arrays in python can only contain values corresponding to same data type"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "## initially Lets import numpy\n",
    "\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "my_lst=[1,2,3,4,5]\n",
    "\n",
    "arr=np.array(my_lst)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1 2 3 4 5]\n"
     ]
    }
   ],
   "source": [
    "print(arr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "numpy.ndarray"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(arr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "## Multinested array\n",
    "my_lst1=[1,2,3,4,5]\n",
    "my_lst2=[2,3,4,5,6]\n",
    "my_lst3=[9,7,6,8,9]\n",
    "\n",
    "arr=np.array([my_lst1,my_lst2,my_lst3])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3, 4, 5],\n",
       "       [2, 3, 4, 5, 6],\n",
       "       [9, 7, 6, 8, 9]])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "numpy.ndarray"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(arr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(3, 5)"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## check the shape of the array\n",
    "\n",
    "arr.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Indexing "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 3, 4, 5])"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## Accessing the array elements\n",
    "\n",
    "arr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr[3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3, 4, 5],\n",
       "       [2, 3, 4, 5, 6],\n",
       "       [9, 7, 6, 8, 9]])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[2, 3],\n",
       "       [9, 7]])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr1[1:,:2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[4, 5],\n",
       "       [5, 6],\n",
       "       [8, 9]])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr1[:,3:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 3, 4, 5])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "arr[3:]=100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  1,   2,   3, 100, 100])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2])"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### Some conditions very useful in Exploratory Data Analysis \n",
    "\n",
    "val=2\n",
    "\n",
    "arr[arr<3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 1],\n",
       "       [2, 3],\n",
       "       [4, 5],\n",
       "       [6, 7],\n",
       "       [8, 9]])"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## Create arrays and reshape\n",
    "\n",
    "np.arange(0,10).reshape(5,2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "arr1=np.arange(0,10).reshape(2,5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "arr2=np.arange(0,10).reshape(2,5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  1,  4,  9, 16],\n",
       "       [25, 36, 49, 64, 81]])"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr1*arr2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 1, 1, 1, 1],\n",
       "       [1, 1, 1, 1, 1]])"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.ones((2,5),dtype=int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.80892282, 0.71540909, 0.61908994],\n",
       "       [0.47289906, 0.81495189, 0.37922198],\n",
       "       [0.98095096, 0.17323863, 0.6673249 ]])"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## random distribution\n",
    "np.random.rand(3,3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "arr_ex=np.random.randn(4,4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.12422209, -0.23846556,  0.67763672, -0.43058943],\n",
       "       [ 0.5030507 , -2.00972442, -0.38910531, -0.24660958],\n",
       "       [ 0.67723849, -0.8381806 ,  1.21662791,  0.06588597],\n",
       "       [ 0.90490645,  0.54938933,  0.85750544, -0.56762178]])"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr_ex"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\krish.naik\\AppData\\Local\\Continuum\\anaconda3\\envs\\myenv\\lib\\site-packages\\scipy\\stats\\stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1fcf9ce0240>"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.distplot(pd.DataFrame(arr_ex.reshape(16,1)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[77, 45],\n",
       "       [79, 55],\n",
       "       [40, 35],\n",
       "       [55, 53]])"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.random.randint(0,100,8).reshape(4,2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.07005997, 0.98540348, 0.98450756, 0.65948775, 0.34944308]])"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.random.random_sample((1,5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
